package br.com.velp.sudecap.entidade;

import java.io.Serializable;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 17.10.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <descricao> Classe Base Para Realização dos Mapeamentos de Entidades do Hibernate </descricao>
 * </sumario>
 */
public abstract class EntityBase implements Serializable {

    public abstract Serializable getId();

    protected boolean genericEquals(Object obj) {
	if (obj == null) {
	    return false;
	}
	if (!obj.getClass().equals(this.getClass())) {
	    return false;
	}
	EntityBase other = (EntityBase) obj;
	if (other.getId() == null && this.getId() == null) {
	    return obj.toString().equals(this.toString());
	}
	if (other.getId() != null && this.getId() == null) {
	    return false;
	}
	if (other.getId() == null && this.getId() != null) {
	    return false;
	}
	if (other.getId().equals(this.getId())){
	    return true;
	}
	return false;
    }
}
